package com.softer.chengxin.train.controller;

import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.common.enums.ResultEnum;
import com.softer.chengxin.train.entity.Train;
import com.softer.chengxin.train.service.TrainService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

/**
 * @author Gong Zhiyang
 * @date 2018/10/13
 */
@RestController
@RequestMapping("/api/train")
public class TrainController {

    @Autowired
    private TrainService trainService;

    /**
     * 添加培训记录
     *
     * @param train   培训记录
     * @param session 缓存
     * @return 添加结果
     */
    @PostMapping("/addTrain")
    public CommonResult addTrain(Train train, HttpSession session) {
        // 查询企业ID
        Integer id = (Integer) session.getAttribute("ID");
        if (id == null) {
            return new CommonResult(ResultEnum.FAIL.getCode(), "请重新登陆后操作");
        }
        train.setCorpId(id);
        checkDate(train);
        return trainService.add(train);
    }

    private void checkDate(Train train) {
        if (StringUtils.isBlank(train.getTrainBeginTime())) {
            train.setTrainBeginTime(null);
            train.setBeginTime(null);
        }
        if (StringUtils.isBlank(train.getTrainEndTime())) {
            train.setEndTime(null);
            train.setTrainEndTime(null);
        }
    }

    /**
     * 提交培训记录
     *
     * @param id 培训ID
     * @return 结果
     */
    @PostMapping("/submit")
    public CommonResult submit(Integer id) {
        return trainService.submit(id);
    }

    /**
     * 编辑培训记录
     *
     * @param train 培训记录
     * @return 结果
     */
    @PostMapping("/edit")
    public CommonResult edit(Train train) {
        checkDate(train);
        return trainService.edit(train);
    }

    /**
     * 刪除培训记录
     *
     * @param id 培训ID
     * @return 结果
     */
    @PostMapping("/delete")
    public CommonResult delete(Integer id) {
        return trainService.delete(id);
    }


    /**
     * 查询人员培训列表
     *
     * @param page  分页实体
     * @param name  人员姓名
     * @param train 查询实体
     * @return 列表
     */
    @PostMapping("/queryTrainList")
    public ManagerPageResult queryTrainList(Page page, String name, Train train, HttpSession session) {
        // 查询企业ID
        Integer id = (Integer) session.getAttribute("ID");
        train.setCorpId(id);
        return trainService.queryTrainList(page, name, train);
    }

    /**
     * 查询具体人员培训列表
     *
     * @param page 页面实体
     * @param id   培训ID
     * @return 列表
     */
    @PostMapping("/queryPersonTrainList")
    public ManagerPageResult queryPersonTrainList(Page page, Integer id) {
        return trainService.queryPersonTrainList(page, id);
    }

    /**
     * 查询培训详情
     *
     * @param id 培训id
     * @return 详情
     */
    @PostMapping("/detail")
    public Train detail(Integer id) {
        return trainService.detail(id);
    }

    /**
     * 根据人员ID获取项目名称
     *
     * @param id 人员ID
     * @return 项目名称
     */
    @PostMapping("/getProjectName")
    public String getProjectName(String id) {
        return trainService.getProjectName(id);
    }
}
